import * as XLSX from "xlsx";// 下载XLSX插件 npm i XLSX

export function exportExcel(columnHeaders, data, cellStyle, fileName) { // columnHeaders 表头信息  data数据  cellStyle 列宽度 fileName 导出文件名
    function outputXlsxFile(data, wscols, xlsxName) { // 用于生成并保存 Excel 文件
        const sheetNames = [];// 存储 sheet 名称
        const sheetsList = {};// 存储所有 sheet 的数据
        const wb = XLSX.utils.book_new();// 创建了一个新的工作簿对象 wb
        console.log(data, 'data');
        for (const key in data) {
            sheetNames.push(key);
            const columnHeader = columnHeaders[key] // 获取当前 sheet 对应的列头信息 columnHeader
            const temp = transferData(data[key], columnHeader);
            sheetsList[key] = XLSX.utils.aoa_to_sheet(temp);// 创建 sheet 对象
            sheetsList[key]["!cols"] = wscols;// 当前 sheet 设置列宽 wscols
        }
        console.log(sheetNames, 'sheetNames');
        console.log(sheetsList, 'sheetsList');
        console.log(wb, 'wb');
        wb.SheetNames = sheetNames;
        wb.Sheets = sheetsList;
        XLSX.writeFile(wb, xlsxName + ".xlsx");// 将工作簿保存为 Excel 文件
    }

    function transferData(data, columnHeader) { // 将数据按照列头信息进行转换，将每一行的数据转换成一个数组
        const content = [];
        content.push(columnHeader);
        data.forEach((item, index) => {
            const arr = [];// 用于存储当前行的数据
            columnHeader.map(column => {
                arr.push(item[column]);// 使用 map 方法遍历 columnHeader，将每个列头对应的属性值添加到 arr 数组中
            })
            content.push(arr);// 将 arr 数组添加到 content 数组中
        });
        console.log(content, 'content');
        return content;
    }
    outputXlsxFile(
        data,
        cellStyle,
        fileName
    );
}


// // 使用示例1：
// import { exportExcel } from '@/utils/exportExcel.js';

// //导出excel逻辑
// const leadOut = () => {
//   //excel表单1的表格数据
//   const arr = [
//     { id: 1, name: '张三', age: 14, sex: '男' },
//     { id: 2, name: '李四', age: 15, sex: '女' },
//     { id: 3, name: '王五', age: 16, sex: '男' },
//   ];
//   //excel表单2的表格数据
//   const arr2 = [
//     { id: 1, class: '一年级', count: 30, teacher: '张三' },
//     { id: 2, class: '二年级', count: 31, teacher: '李四' },
//     { id: 3, class: '三年级', count: 32, teacher: '王五' },
//   ];
//   const allRecordList = arr.map((item, index) => {
//     return {
//       序号: String(index + 1),
//       姓名: item.name,
//       年龄: String(item.age),
//       性别: item.sex,
//     };
//   });
//   const allRecordList2 = arr2.map((item, index) => {
//     return {
//       序号: String(index + 1),
//       班级: item.class,
//       人数: String(item.count),
//       老师: item.teacher,
//     };
//   });
//   const data = {
//     人员列表: allRecordList,
//     班级列表: allRecordList2,
//   };
//   //两个表单的表头
//   const columnHeaders = {
//     人员列表: ['序号', '姓名', '年龄', '性别'],
//     班级列表: ['序号', '班级', '人数', '老师'],
//   };

//   const cellStyle = [{ wch: 6 }, { wch: 10 }, { wch: 10 }, { wch: 10 }];
//   const fileName = '人员列表excel导出文件名';
//   exportExcel(columnHeaders, data, cellStyle, fileName);
// }
// // 导出按钮功能（可替换为实际导出逻辑）
// function exportList() {
//   //调用导出excel逻辑
//   leadOut()
// }


// // 使用示例2：
// import { exportExcel } from '@/utils/exportExcel.js';

// // 示例数据
// const tableData = ref([
//     { school: '北京大学', group: '01', name: '张三丰', idCard: '422425197910205292', phone: '15168200269', job: '会计' },
//     { school: '北京大学', group: '01', name: '王二小', idCard: '422425197910205292', phone: '15168200269', job: '出纳' },
//     { school: '北京大学', group: '01', name: '李小红', idCard: '422425197910205292', phone: '15168200269', job: '税务' },
//     { school: '浙江大学', group: '02', name: '张四海', idCard: '422425197910205292', phone: '15168200269', job: '会计' },
//     { school: '浙江大学', group: '02', name: '王红华', idCard: '422425197910205292', phone: '15168200269', job: '出纳' },
//     { school: '浙江大学', group: '02', name: '李东华', idCard: '422425197910205292', phone: '15168200269', job: '税务' },
//     { school: '清华大学', group: '02', name: '张四海', idCard: '422425197910205292', phone: '15168200269', job: '会计' },
//     { school: '清华大学', group: '02', name: '王红华', idCard: '422425197910205292', phone: '15168200269', job: '出纳' },
//     { school: '北京大学', group: '01', name: '李小红', idCard: '422425197910205292', phone: '15168200269', job: '税务' },
//     { school: '浙江大学', group: '02', name: '张四海', idCard: '422425197910205292', phone: '15168200269', job: '会计' },
//     { school: '浙江大学', group: '02', name: '王红华', idCard: '422425197910205292', phone: '15168200269', job: '出纳' },
//     { school: '浙江大学', group: '02', name: '李东华', idCard: '422425197910205292', phone: '15168200269', job: '税务' },
//     { school: '清华大学', group: '02', name: '张四海', idCard: '422425197910205292', phone: '15168200269', job: '会计' },
//     { school: '清华大学', group: '02', name: '王红华', idCard: '422425197910205292', phone: '15168200269', job: '出纳' },
//     { school: '安徽大学', group: '02', name: '李东华', idCard: '422425197910205292', phone: '15168200269', job: '税务' },
// ])

// //导出excel逻辑
// const leadOut = () => {
//     //excel表单1的表格数据
//     // const arr = [
//     //   { id: 1, name: '张三', age: 14, sex: '男' },
//     //   { id: 2, name: '李四', age: 15, sex: '女' },
//     //   { id: 3, name: '王五', age: 16, sex: '男' },
//     // ];
//     // //excel表单2的表格数据
//     // const arr2 = [
//     //   { id: 1, class: '一年级', count: 30, teacher: '张三' },
//     //   { id: 2, class: '二年级', count: 31, teacher: '李四' },
//     //   { id: 3, class: '三年级', count: 32, teacher: '王五' },
//     // ];
//     // const allRecordList = arr.map((item, index) => {
//     //   return {
//     //     序号: String(index + 1),
//     //     姓名: item.name,
//     //     年龄: String(item.age),
//     //     性别: item.sex,
//     //   };
//     // });
//     // const allRecordList2 = arr2.map((item, index) => {
//     //   return {
//     //     序号: String(index + 1),
//     //     班级: item.class,
//     //     人数: String(item.count),
//     //     老师: item.teacher,
//     //   };
//     // });

//     // 最终导出的表格行数据数据处理
//     const allRecordList3 = tableData.value.map((item, index) => {
//         return {
//             序号: String(index + 1),
//             学校: item.school,
//             组号: item.group,
//             姓名: item.name,
//             身份证号: item.idCard,
//             手机号: item.phone,
//             岗位: item.job,
//         };
//     });
//     const data = {
//         // 人员列表: allRecordList,
//         // 班级列表: allRecordList2,
//         选号结果导出名单: allRecordList3,
//     };
//     //两个表单的表头
//     const columnHeaders = {
//         // 人员列表: ['序号', '姓名', '年龄', '性别'],
//         // 班级列表: ['序号', '班级', '人数', '老师'],
//         选号结果导出名单: ['序号', '学校', '组号', '姓名', '身份证号', '手机号', '岗位'],
//     };

//     const cellStyle = [{ wch: 10 }, { wch: 20 }, { wch: 10 }, { wch: 10 }, { wch: 20 }, { wch: 20 }, { wch: 15 },];//wch是单元格宽度
//     const fileName = '选号结果导出名单';
//     exportExcel(columnHeaders, data, cellStyle, fileName);
// }
// // 导出按钮功能（可替换为实际导出逻辑）
// function exportList() {
//     //调用导出excel逻辑
//     leadOut()
// }